/*
 * Autor: Alejandro Jimnez Agudo
 * Fecha: 27/04/08
 * Licencia: Este programa es software libre; puede redistribuirlo y/o modificarlo bajo los trminos de la Licencia Pblica General GNU
 *  tal como la publica la Free Software Foundation; tanto en la versin 2 de la Licencia, o (a su opcin) cualquier otra versin posterior.
 *
 * Este programa se distribuye con la esperanza de que le sea til, pero SIN NINGUNA GARANTA; sin incluso la garanta implcita de MERCANTILIDAD
 * o IDONEIDAD PARA UN PROPSITO PARTICULAR. Vea la Licencia Pblica General GNU para ms detalles.
 * puede obtener una copia de la Licencia Pblica General GNU a travs de la Free Software Foundation visitando su pgina web (http://www.fsf.org/)
 * o escribiendo a la Free Software Foundation, Inc. 51 Franklin Street Fifth Floor Boston, MA02110-1301EE. UU.
 * */

/************************************************************************
                        BindList.h.cpp - Copyright alex
**************************************************************************/

#include "BindList.h"

//************ Constructor & Destructor *****************
BindList::BindList(){
}

BindList::~BindList(){

}


// ***************** Public Methods *********************

// Setters

void BindList::addBind(Bind *bind){
        deleteBind(bind->getKey());
        binds_.append(bind);
}


void BindList::copy(BindList origin){
    QLinkedList<Bind *> listbinds_ = origin.getBinds();
    while(!listbinds_.isEmpty()){
        addBind(listbinds_.takeFirst());
    }
}


void BindList::deleteBind(QString key){
    QLinkedList<Bind*>::iterator it = binds_.begin();
    it = binds_.begin();
    while(it != binds_.end()){
        if((*it)->getKey() == key)
            it = binds_.erase(it);
        else
            it++;
    }
}

void BindList::clearList(){
    binds_.clear();
}

// Setters

QLinkedList<Bind *> BindList::getBinds(){
        return binds_;
}

Bind *BindList::getBind(QString key){
    Bind *b;
    QLinkedList<Bind *>::iterator it = binds_.begin();
    while(it != binds_.end()){
        if((*it)->getKey() == key){
            b = new Bind(*it);
            return b;
        }
        else
            it++;
    }
    return NULL;
}


// Booleans

bool BindList::containsBind(QString key){
    bool exist = false;
    QLinkedList<Bind *>::iterator it = binds_.begin();
    while((it != binds_.end()) && !exist){
        if((*it)->getKey() == key)
            exist = true;
        else
            it++;
    }
    return exist;
}
